Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

109
Vistas
No se puede actualizar React.useState("") después de unir todos los elementos de la matriz en una sola cadena

Estoy tratando de actualizar React.useState("") usando setDisplay en una función que toma una serie de cadenas y las une en una sola cadena antes de setDisplay.

Sin setDisplay, puedo usar console.log() y obtener la matriz unida.

 const App = () => { const [display, setDisplay] = React.useState(""); const values = []; const onClick = (value) => { values.push(value); console.log(values) // w/o setDisplay output: ["1","2","3","4"]; w/ setDisplay output: ["1"]; ["2"]; ["3"]; ["4"]; setDisplay(values.join("")) }; return ( <div className="p-5"> {display} <NumPads data={keypress} onClick={onClick} /> <OperatorPads data={keypress} onClick={onClick} /> </div> ); };
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

setDisplay((values) => ([...values, value].join("")]))
about 4 years ago · Juan Pablo Isaza Denunciar

0

  const onClick = (value) => setDisplay((dispay) => display.concat('', value));
about 4 years ago · Juan Pablo Isaza Denunciar

0

La razón por la que console.log parece funcionar cuando no llama a setDisplay es simplemente porque el estado del componente no cambió.

Cuando llama a setDisplay , cambia el estado, por lo que todo el componente se vuelve a representar, lo que hace que los values se restablezcan a una matriz vacía.

Soluciones

  • Una forma de resolver esto ya se muestra en una respuesta anterior .

  • Otra forma es envolver su matriz de values con useRef :

     const values = useRef([]);

    Luego acceda a la matriz usando values.current

  • Otra forma más es eliminar el uso de values todos juntos y cambiar la devolución de llamada a:

     const onClick = (value) => { setDisplay(display + value); };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda